// Simple variables in Rust can be printed with {} inside println!. But some
// variables can't, and you need to debug print. Debug print is printing for the
// programmer, because it usually shows more information. Debug sometimes
// doesn't look pretty, because it has extra information to help you.
//
// How do you know if you need {:?} and not {}? The compiler will tell you.
//
// {:#?} is called "pretty printing". It is like {:?} but prints with different
// formatting over more lines.
//
// So Display means printing with {}, and Debug means printing with {:?}.
fn main() {
    {
        let doesnt_print = ();
        println!("This will not print: {:?}", doesnt_print);
    }

    println!();

    {
        print!("This will not print a new line");
        println!(" so this will be on the same line");
    }

    println!();

    {
        // Hint: printing std::i8::MIN means "print MIN inside of the i8 section
        // in the standard library".
        println!(
            "The smallest i8 is {} and the biggest i8 is {}.",
            i8::MIN,
            i8::MAX
        );
        println!(
            "The smallest u8 is {} and the biggest u8 is {}.",
            u8::MIN,
            u8::MAX
        );
        println!(
            "The smallest i16 is {} and the biggest i16 is {}.",
            i16::MIN,
            i16::MAX
        );
        println!(
            "The smallest u16 is {} and the biggest u16 is {}.",
            u16::MIN,
            u16::MAX
        );
        println!(
            "The smallest i32 is {} and the biggest i32 is {}.",
            i32::MIN,
            i32::MAX
        );
        println!(
            "The smallest u32 is {} and the biggest u32 is {}.",
            u32::MIN,
            u32::MAX
        );
        println!(
            "The smallest i64 is {} and the biggest i64 is {}.",
            i64::MIN,
            i64::MAX
        );
        println!(
            "The smallest u64 is {} and the biggest u64 is {}.",
            u64::MIN,
            u64::MAX
        );
        println!(
            "The smallest i128 is {} and the biggest i128 is {}.",
            i128::MIN,
            i128::MAX
        );
        println!(
            "The smallest u128 is {} and the biggest u128 is {}.",
            u128::MIN,
            u128::MAX
        );
    }
}
